package snowflake

import (
	"errors"
	"time"
)

var (
	sonyFlake   *Sonyflake // 全局雪花实例
	sonyMachine uint16     // 机器ID
)

func getMachineID() (uint16, error) {
	return sonyMachine, nil
}

// SnowInit 雪花算法初始化函数
func SnowInit(machineId uint16) (err error) {
	sonyMachine = machineId
	// 初始化一个开始的时间
	t, _ := time.Parse("2006-01-02", "2025-01-12")
	// 初始化雪花的配置
	settings := Settings{
		StartTime: t,
		MachineID: getMachineID,
	}
	sonyFlake = NewSonyflake(settings) // 将生成的雪花实例赋值给全局雪花实例
	return nil
}

// GetID 获取雪花算法生成的全局唯一id
func GetID() (id uint64, err error) {
	if sonyFlake == nil {
		err = errors.New("sonyFlake not init") //即还未生成雪花对象
	}
	id, err = sonyFlake.NextID()
	return
}
